#ifndef COMMON_H
#define COMMON_H

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <stdbool.h>

// 前置声明解决循环依赖
typedef struct _GtkWindow GtkWindow;


typedef enum
{
	occupy	,	//占用	
	avalible	//空闲

}Table_status;
// 会员状态枚举
typedef enum {
    active,    // 活跃
    frozen,    // 冻结
    deleted    // 已删除
} UserStatus;

// 会员性别枚举
typedef enum {
    male,      // 男
    female     // 女
} Gender;

// 会员类型枚举
typedef enum {
    times_card,    // 次卡
    month_card,    // 月卡
    quarter_card,  // 季卡
    year_card      // 年卡
} UserType;

// 会员信息结构体
typedef struct {
    unsigned int user_id;        // 用户ID
    char card_id[11];            // 卡号(10位)
    char user_name[50];          // 姓名
    Gender sex;                  // 性别
    char birth[11];              // 生日
    char phone[20];              // 电话
    time_t reg_date;             // 注册时间
    UserType user_type;          // 会员类型
    int balance;                 // 余额/次数
    time_t expire_date;          // 过期时间
    UserStatus status;           // 状态
} user_imf;

// 函数声明
void init_data_file(void);
bool add_user(user_imf user);
bool del_user(unsigned int user_id);
bool update_user(user_imf user);
int find_user_pos(unsigned int user_id);
void res_user(unsigned int user_id, user_imf *user);
void list_all(user_imf **users, int *count);
bool is_card_id_unique(const char *card_id, unsigned int exclude_id);
void show_message_dialog(GtkWindow *parent, const char *message);

#endif
    
